#include "Output.h";

mailBox *GiveOutputOut(output out){
	return &out.Uitvoer;
}

//initialiseert de output
void outputInit(output *out)
{
	(*out).taak = (task*)malloc(sizeof(task)); //maakt plaats voor de taak
	create_mailBox(&((*out).Todo), 1, sizeof(outputInvoer)); //maakt een mailbox waarin data kan worden gezet
	create_mailBox(&((*out).Uitvoer), 1, sizeof(outputUitvoer));
	create_event((&(*out).dataOpOut), 0); //maakt het event van output
}

//de taak die actief de output verzorgt.
unsigned __stdcall outputStart(void* arg){
	task* t = (task*) arg;
	output *out = (output *)getArgument_task(t);
	outputInvoer invoer;
	int output = 0;
	while(!isTerminated_task(t)){
		get_mailBox(&((*out).Todo), &invoer);
		output = invoer.huidigeSnelheid-invoer.ingesteldeSnelheid;
		put_mailBox(&((*out).Uitvoer), &invoer);
		pulse_event(&((*out).dataOpOut));
	}
	return 0;
}

//ruimt de ourput op
void outputDelete(output *out)
{
	delete_task((*out).taak);			//verwijdert de taak
	delete_mailBox(&((*out).Todo));		//verwijdert de mailbox
	delete_mailBox(&((*out).Uitvoer));
	delete_event(&((*out).dataOpOut));	//verwijdert het event
}